"""
创建一个类
1. 定义初始化方法:
    1.1 获取配置文件路径
    1.2 实例化configpraser类
    1.3 读取指定路径下的配置文件信息

2. 定义一个对外方法,获取某个指定的section下的所有option的值

"""
import os
from configparser import ConfigParser


# 创建一个类
class ReadConfig:
    # 1. 定义初始化方法:
    def __init__(self):
        # 1.1 获取配置文件路径
        self.path = os.path.dirname(os.path.dirname(__file__)) + r"/config.ini"
        # 1.2 实例化configpraser类
        self.conf = ConfigParser()
        # 1.3 读取指定路径下的配置文件信息
        self.conf.read(self.path, encoding="utf-8")
        # 获取所有section的值(了解)
        print(f"所有section的值:{self.conf.sections()}")

    # # 2. 定义一个对外方法,获取某个指定的section下的所有option的值
    # def get_options(self, s):
    #     # 获取指定section下所有option的键值对
    #     return self.conf.items(s)
    #
    # # 3. 定义一个对外方法,获取指定section下指定option的值
    # def get_option(self, s, o):
    #     return self.conf.get(s, o)

    # # 不定长参数实现
    # def get_config(self, *args):
    #     """
    #     传递一个参数,返回这个section下所有option的键值对
    #     传递两个参数进来,返回这个section下指定option的value
    #     """
    #     if len(args) == 1:
    #         return self.conf.items(args[0])
    #     elif len(args) == 2:
    #         return self.conf.get(args[0], args[1])
    #     else:
    #         print("您输入的参数个数不对")
    # 不定长参数实现
    def get_config(self, s, o="all"):
        """
        传递一个参数,返回这个section下所有option的键值对
        传递两个参数进来,返回这个section下指定option的value
        """
        if o == "all":
            return self.conf.items(s)
        else:
            return self.conf.get(s, o)


if __name__ == '__main__':
    rc = ReadConfig()
    # print(rc.get_options("mysql"))
    # print(rc.get_option("redis", "port"))
    print(rc.get_config("mysql"))
    print(rc.get_config("mysql", "port"))
